# include "linea.h"

void
Linea::trasladar(float x, float y)
{
	pa.trasladar(x,y);
	
	pb.trasladar(x,y);
}

void
Linea::redimensionar(float x, float y)
{
	pa.trasladar(-x/2, y/2);
	
	pb.trasladar(x/2,-y/2);		
}

bool
Linea::seleccionar(float x, float y)
{
	float inx = pa.getX() - pb.getX();
	
	float iny = pa.getY() - pb.getY();
	
	float iniciox = x - pa.getX();
	
	float inicioy = y - pa.getY();
	
	bool ret = false;
	
	ret = ((iniciox/inicioy) - (inx/iny) < 0.1 
		&& ((pa.getX() > pb.getX() 
			&& x < pa.getX() 
			&& x > pb.getX()) 
			|| (pa.getX() < pb.getX() 
				&& x > pa.getX() 
				&& x < pb.getX()))
		&& ((pa.getY() > pb.getY() 
			&& y < pa.getY() 
			&& y > pb.getY()) 
			|| (pa.getY() < pb.getY() 
				&& y > pa.getY() 
				&& y < pb.getY()))				
				);
				
	return (ret);
}

bool
Linea::contenida(Punto c, Punto d)
{
	bool ret = false;
	
	if (c.getX() > pb.getX())
	{
		if (c.getY() > pb.getY())
		{
			if (c.getX() >= pa.getX() && d.getX() <= pa.getX() &&
				c.getX() >= pb.getX() && d.getX() <= pb.getX() &&
				c.getY() >= pa.getY() && d.getY() <= pa.getY() &&
				c.getY() >= pb.getY() && d.getY() <= pb.getY())
			{
				ret = true;
			}
		}
		
		else
		{
			if (c.getX() >= pa.getX() && d.getX() <= pa.getX() &&
				c.getX() >= pb.getX() && d.getX() <= pb.getX() &&
				c.getY() <= pa.getY() && d.getY() >= pa.getY() &&
				c.getY() <= pb.getY() && d.getY() >= pb.getY())
			{
					ret = true;
			}			
		}
	}
	
	else
	{
		if (c.getY() > pb.getY())
		{
			if (c.getX() <= pa.getX() && d.getX() >= pa.getX() &&
				c.getX() <= pb.getX() && d.getX() >= pb.getX() &&
				c.getY() >= pa.getY() && d.getY() <= pa.getY() &&
				c.getY() >= pb.getY() && d.getY() <= pb.getY())
			{
					ret = true;
			}			
		}
		
		else
		{
			if (c.getX() <= pa.getX() && d.getX() >= pa.getX() &&
				c.getX() <= pb.getX() && d.getX() >= pb.getX() &&
				c.getY() <= pa.getY() && d.getY() >= pa.getY() &&
				c.getY() <= pb.getY() && d.getY() >= pb.getY())
			{
					ret = true;
			}			
		}
	}
	
	return (ret);
}
